본문으로 건너뛰기

오늘 한 일

  • Rust 공식문서
  • Kotlin 약알림 앱
  • Flutter 웹뷰 플젝


Rust 공식문서 공부

6.2 match 제어흐름



Android Kotlin 개발

화면이동 및 이전 기록(Task Stack) 삭제

고민: Intent Flag

:Task Stack과 관련된 문제인 것 같다

→ Intent로 Task Stack 알아보기



Webview issue: FCM & local_notification

Flow 정리

FCM 연동

  • 어떻게 하는지 알아보기
  • Android 세팅
  • iOS 세팅

FCM 핸들링 메소드

  • 어떻게 하는지 알아보기
  • onMessage
  • ---> 자체적으로 내부 알림을 띄우게 핸들링
  • onBackgroundMessage
  • getInitialMessage
  • onMessageOpenedApp
  • ---> 해당 url로 이동해야함

Local Notification 띄우기

  • 실제 기기에선 되는지 먼저 확인
  • 안드로이드 세팅
  • iOS 세팅
  • 완료

FCM 라이브러리 스펙확인

iOS 세팅

Xcode 프로젝트 → 푸시알림 & 백그라운드 모드 사용 설정

AOS 세팅

딱히 크게 정의할 필요없음


앱 상태에 따른 메시징 처리

: 앱은 foreground, background, terminated로 구분할 수 있다

포그라운드

앱에 도착하는 알림은 기본적으로 보이는 알림을 표시하지 않는다 → 동작의 재정의로 알림 구현가능 FCM에 의한 알림이 아닌 내부에서의 알림을 띄우는 방식으로

onMessage로 핸들링

FirebaseMessaging.onMessage.listen((RemoteMessage message) {}

백그라운드(네이티브 플랫폼)

onBackgroundMessage 핸들러를 동작해서 처리

메시지 수신시 안드로이드 → 메시지 처리가능 iOS → isolation 처리 X

주의사항

  1. 익명 함수가 아니어야 합니다.
  2. 최상위 수준 함수(메서드가 아닌)
  3. 핸들러는 함수 선언 위에 @pragma('vm:entry-point')로 주석(release mode의 경우 트리 쉐이킹 중에 삭제가능)

상호작용처리

: 알림 클릭 → 앱 실행 → 원하는 페이지로 이동

  • getInitialMessage(): 앱이 열리면 RemoteMessage가 포함된 Future가 반환
    → 소비되면 RemoteMessage가 삭제
  • onMessageOpenedApp: 앱이 열릴 때 RemoteMessage를 게시하는 Stream입니다

구현

: logger로 디버깅하면서 코드를 짜본 결과 FCM 메시지 수신에는 이상이 없었다.
다만 에뮬레이터에서 메시지 알림이 안 올 뿐.

⇒ 1. 에뮬레이터가 가진 고유의 문제?

⇒ 2. FCM 자체의 알림이 안뜨더라도 foreground에서 수신한 메시지를 핸들링해서 화면에 띄우기 위해선,
local_notification을 통해 띄우는 게 필요하므로, local_notification을 활용해보는 방향으로 생각중이다



마무리

1__ 22일은 개발활동을 할 수 있을까? 너무 피곤..